import os
import cv2

img = cv2.imread("../data/birds.jpg")
img = cv2.resize(img, (600, 600))
# 把图片转换为灰度图
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 对灰度图像进行二值化处理
# THRESH_BINARY_INV 反相二值化 像素值 < 127 设为255(白色） > 127 设为0
ret, thresh = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY_INV)
# 从二值化图像中查找轮廓
# RETR_TREE :查找轮廓，并检索所有轮廓，并建立层级关系
# CHAIN_APPROX_SIMPLE 查找相似点，角点 ，保留轮廓角点
# contours 轮廓列表
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 遍历并检测所有轮廓的列表信息
print(contours)
for c in contours:
    # g过滤面积过小的轮廓（去除噪点）
    if cv2.contourArea(c) > 100:
        # 计算轮廓的最小外接矩形
        # 返回值：x1 y1（矩形左上角坐标）w,h(矩形，宽高）
        x1, y1, w, h = cv2.boundingRect(c)
        # 在原始轮廓上 绘制外接矩形
        cv2.rectangle(img, (x1, y1), (x1 + w, y1 + h), (0, 255, 0), 1)
cv2.imshow("img", img)
cv2.imshow("thresh", thresh)

cv2.waitKey(0)
